home *** CD-ROM | disk | FTP | other *** search
- /*****************************************************************************
- * *
- * ASAP - Amiga Software Authoring Platform *
- * *
- * Written by Laurie Perrin *
- * *
- * AFileLock wrapper class *
- * *
- *****************************************************************************/
-
- #ifndef ASAP_FileLock_H
- #define ASAP_FileLock_H
-
- #include <New.h>
-
- extern "C"
- {
- #include <Proto/DOS.h>
- }
-
- class AFileHandle;
-
- class AFileLock : public FileLock
- {
- public:
- inline AFileLock * CurrentDir();
- inline AFileLock * DupLock();
- inline void * operator new (size_t, AFileLock *);
- inline LONG ExAll(ExAllData * buffer, long size, long data, ExAllControl * control);
- inline void ExAllEnd(ExAllData * buffer, long size, long data, ExAllControl * control);
- inline LONG ExNext(FileInfoBlock * fileInfoBlock);
- inline LONG Examine(FileInfoBlock * fileInfoBlock);
- inline LONG Info(InfoData * parameterBlock);
- inline static AFileLock * Lock(STRPTR name, long type);
- inline void * operator new(size_t, STRPTR name, long type);
- inline LONG NameFromLock(STRPTR buffer, long len);
- inline AFileHandle * OpenFromLock();
- inline AFileLock * ParentDir();
- inline BOOL SameDevice(FileLock * lock2);
- inline LONG SameLock(FileLock * lock2);
- inline AFileLock * SetProgramDir();
- inline void UnLock();
- inline void operator delete(void *lock);
- };
- //----------------------------------------------------------------------------
- AFileLock * AFileLock::CurrentDir ()
- {
- return (AFileLock *) ::CurrentDir((BPTR) this);
- }
- //----------------------------------------------------------------------------
- AFileLock * AFileLock::DupLock ()
- {
- return (AFileLock *) ::DupLock((BPTR) this);
- }
- //----------------------------------------------------------------------------
- void * AFileLock::operator new (size_t, AFileLock *lock)
- {
- return ((AFileLock *) lock)->DupLock(); // ::DupLock((BPTR) lock);
- }
- //----------------------------------------------------------------------------
- LONG AFileLock::ExAll (ExAllData * buffer, long size, long data, ExAllControl * control)
- {
- return ::ExAll((BPTR) this, buffer, size, data, control);
- }
- //----------------------------------------------------------------------------
- void AFileLock::ExAllEnd (ExAllData * buffer, long size, long data, ExAllControl * control)
- {
- ::ExAllEnd((BPTR) this, buffer, size, data, control);
- }
- //----------------------------------------------------------------------------
- LONG AFileLock::ExNext (FileInfoBlock * fileInfoBlock)
- {
- return ::ExNext((BPTR) this, fileInfoBlock);
- }
- //----------------------------------------------------------------------------
- LONG AFileLock::Examine (FileInfoBlock * fileInfoBlock)
- {
- return ::Examine((BPTR) this, fileInfoBlock);
- }
- //----------------------------------------------------------------------------
- LONG AFileLock::Info (InfoData * parameterBlock)
- {
- return ::Info((BPTR) this, parameterBlock);
- }
- //----------------------------------------------------------------------------
- AFileLock * AFileLock::Lock (STRPTR name, long type)
- {
- return (AFileLock *) ::Lock(name, type);
- }
- //----------------------------------------------------------------------------
- void * AFileLock::operator new (size_t, STRPTR name, long type)
- {
- return AFileLock::Lock(name, type);
- }
- //----------------------------------------------------------------------------
- LONG AFileLock::NameFromLock (STRPTR buffer, long len)
- {
- return ::NameFromLock((BPTR) this, buffer, len);
- }
- //----------------------------------------------------------------------------
- AFileHandle * AFileLock::OpenFromLock ()
- {
- return (AFileHandle *) ::OpenFromLock((BPTR) this);
- }
- //----------------------------------------------------------------------------
- AFileLock * AFileLock::ParentDir ()
- {
- return (AFileLock *) ::ParentDir((BPTR) this);
- }
- //----------------------------------------------------------------------------
- BOOL AFileLock::SameDevice (FileLock * lock2)
- {
- return ::SameDevice((BPTR) this, (BPTR) lock2);
- }
- //----------------------------------------------------------------------------
- LONG AFileLock::SameLock (FileLock * lock2)
- {
- return ::SameLock((BPTR) this, (BPTR) lock2);
- }
- //----------------------------------------------------------------------------
- AFileLock * AFileLock::SetProgramDir ()
- {
- return (AFileLock *) ::SetProgramDir((BPTR) this);
- }
- //----------------------------------------------------------------------------
- void AFileLock::UnLock ()
- {
- ::UnLock((BPTR) this);
- }
- //----------------------------------------------------------------------------
- void AFileLock::operator delete (void *lock)
- {
- ((AFileLock *) lock)->UnLock();
- }
-
- #endif
-